package Contracts;

import Impl.Type;
import Services.BlocService;
import Services.TerrainService;

public class TerrainServiceDecorator implements TerrainService{
	private TerrainService delegate;
	
	public TerrainServiceDecorator(TerrainService terrainService){
		this.delegate = terrainService;
	}
	
	public TerrainService getDelegate(){
		return delegate;
	}
	
	// Constructeurs
	@Override
	public void init(int sizeX, int sizeY) {
		delegate.init(sizeX, sizeY);
	}
	@Override
	public void init(String filename) {
		delegate.init(filename);
	}
	
	@Override
	public void clone(TerrainService terrain) {
		delegate.clone(terrain);
	}

	// Observateurs
	@Override
	public int getSizeX() {
		return delegate.getSizeX();
	}

	@Override
	public int getSizeY() {
		return delegate.getSizeY();
	}

	@Override
	public BlocService getBloc(int x, int y) {
		return delegate.getBloc(x, y);
	}

	@Override
	public Type getTypeBloc(int x, int y) {
		return delegate.getTypeBloc(x, y);
	}

	@Override
	public Type getOldTypeBloc(int x, int y) {
		return delegate.getOldTypeBloc(x, y);
	}

	@Override
	public int getXJoueur() {
		return delegate.getXJoueur();
	}

	@Override
	public int getYJoueur() {
		return delegate.getYJoueur();
	}

	@Override
	public int getNbDiamant() {
		return delegate.getNbDiamant();
	}
	
	@Override
	public int getNbJoueur() {
		return delegate.getNbJoueur();
	}

	@Override
	public int getNbPorte() {
		return delegate.getNbPorte();
	}
	
	@Override
	public boolean isChanged(int x, int y) {
		return delegate.isChanged(x, y);
	}
	
	@Override
	public boolean isStarted() {
		return delegate.isStarted();
	}

	// Operateurs
	@Override
	public void openDoor() {
		delegate.openDoor();
	}

	@Override
	public void validate() {
		delegate.validate();
	}

	@Override
	public void putHero(int x, int y) {
		delegate.putHero(x, y);
	}

	@Override
	public void moveObject(int x, int y, int xnew, int ynew) {
		delegate.moveObject(x, y, xnew, ynew);
	}

	@Override
	public void startTerrain() {
		delegate.startTerrain();
	}

	@Override
	public void addObject(int x, int y, Type type) {
		delegate.addObject(x, y, type);
	}
	
	@Override
	public boolean equals(Object o){
		return delegate.equals(o);
	}
}
